import 'dart:io';

main()async{
  // 链式调用
  print("开始请求数据");
  try{
    int firstData = await getFirstData();
    print("第一个函数执行完成,返回值是$firstData");
    int secondData = await getSecondData();
    print("第二个函数执行完成,返回值是$secondData");
    int thirdData = await getThirdData();
    print("第三个函数执行完成，返回值是$thirdData");
  }catch(error){
    print("请求数据失败，失败原因是:$error");
  }
  finally{
    print("请求数据完成");
  }
  //使用asyns和await会将这一不阻碍掉，等try catch执行完才能执行
 print("其他业务");
}
// 第一个函数执行
Future<int>getFirstData(){
  return new Future((){
    sleep(Duration(seconds: 2));
    return 100;
  });
}
// 第二个函数执行
Future<int>getSecondData(){
  return  Future((){
    sleep(Duration(seconds: 2));
    // throw "第二个函数执行失败";
    return 200;
  });
}
// 第三个函数执行
Future<int>getThirdData(){
  return new Future((){
    sleep(Duration(seconds: 2));
    return 300;
  });
}
